In 10#2 we presented a new scheme to select fonts in TEX<#56#><#56#>
macro packages. This article describes the use of this new scheme in
the LATEX<#57#><#57#> environment. The technical parts of the interface (which
are of some interest to readers who plan to use our scheme with
other fonts or with other macro packages) will be published in a
separate article.
The necessary macros are distributed by the AMS together with the
<#58#>amstex.sty<#58#> option which was announced in 10#3.
31
The availibility of the new font selection scheme at the usual
servers will be announced separately in TEX<#61#><#61#>hax, etc. Please
refrain from asking for personal distribution.
To get a better understanding of this LATEX<#62#><#62#> interface, some words on
the organisation of font families are in order. Readers of our
article about the basic macros will notice that our understanding of
these matters increased while working on this interface and the <#63#> amstex.sty<#63#> project; in some regards we have changed our point of view
rather drastically.
Surprisingly, only a few internal details within the basic
macros needed adjustment; it seems that even without the real
understanding, we
instinctively got most of the things right when we designed them. (But
probably we are still ignorant of the underlying concepts.)
In his book about ``Methods of Book Design'' Hugh Williamson writes
[#Williamson##1###]
[...]
To the printer, an alphabet is a set of twenty-six letters of a
certain design and body, together with a few additional
combinations of letters. A <#66#>fount<#66#> is usually made up of a
set of alphabets of one size and based on one design. It may
consist of one alphabet only, if no more alphabets exist in that
design and size. Usually however a text fount will comprise five
alphabets --- roman and italic upper and lower-case, and small
capitals.
[...]
A <#67#>series<#67#> is a set of founts closely related to each other
in design, and usually very similar to each other, but graded in
size. If only one alphabet has been made in a certain design, that
alphabet alone may be a series. A <#68#>family<#68#> is a group of
series compatible for composition, but loosely related in design. A
family may include excerpts from more than one series.
Since TEX<#70#><#70#>'s physical fonts (which is the American word for
fount) all contain exactly two alphabets, namely the upper and
lower-case alphabets of a certain design, we will use the word font
for physical TEX<#71#><#71#> fonts, and fount for bundles of TEX<#72#><#72#> fonts
consisting for example of roman (upright or normal), italic and small
capitals shapes.
The above quotation gives a good clue how to organize fonts in our
font selection scheme. Hence we use the 1 command from
the basic macros to distinguish between normal (n), italic (it),
small caps (sc), sloped or slanted (sl) and upright italic (u)
typefaces within one fount. Founts of different sizes form a series,
so we use 2 to access these. We think that the weight and
the width of a series are good candidates to distinguish between
individual series, therefore we combine them in the 3
command. Again we use one and two letter abbreviations as shown in
table~#tab:series#73>. One or more of these series form a family
which is accessed via the 4 command.
<#1367#>Table<#1367#>:
<#1368#>Weight and width classification for fonts.
The percent values are derived from [#IBM##1###].
To combine the abbreviations in the <#90#>series<#90#>
command, weight is used first and any instance of medium
(<#91#>m<#91#>) is dropped except when weight and width are both
medium. In this case one single <#92#>m<#92#> is used. So bold
expanded would be <#93#>bx<#93#> whereas medium expanded would
be <#94#>x<#94#>.<#1368#>
Weight Class |
Ultralight |
ul |
Extralight |
el |
Light |
l |
Semilight |
sl |
Medium (normal) |
m |
Semibold |
sb |
Bold |
b |
Extrabold |
eb |
Ultrabold |
ub |
Width Class |
Ultracondensed |
50 |
uc |
Extracondensed |
62.5 |
ec |
Condensed |
75 |
c |
Semicondensed |
87.5 |
sc |
Medium |
100 |
m |
Semiexpanded |
112.5 |
sx |
Expanded |
125 |
x |
Extraexpanded |
150 |
ex |
Ultraexpanded |
200 |
ux |
|
To give some practical example, we arranged the most important
families of the Computer Modern fonts according to this
classification in table~#tab:fonts#97>. Please note that some
families like `computer modern funny roman' (<#98#>cmff<#98#>) or `computer
modern sans serif
quotation' (<#99#>cmssq<#99#>) are unclassified. These special
purpose fonts are not accessible in the standard distribution of the
new font selection scheme, although they could be added easily in a
style file.
<#1410#>Table<#1410#>:
<#1411#>Classification of the Computer modern fonts.
You will notice that not all possible combinations of
family, series and shape are available. E.g. there is
no small capitals shape in the medium series of the
computer modern sans serif. However, Philip Taylor
announced recently that he has filled some of the holes.
It might be a good idea to include such additional parameter
files for METAFONT<#135#><#135#> into the general distributions.<#1411#>
<#102#>3pt<#102#>
cmssbxComputer Modern families |
cmssbxfamily |
cmssbxseries |
cmssbxshape(s) |
cmssbxExample of external names |
Computer modern roman |
cmr |
m |
n, it, sl, sc,
u |
cmr10, cmti10,
cmsl10, cmcsc10, cmu10 |
cmr |
bx |
n, it, sl |
cmbx10, cmbxti, cmbxsl |
cmr |
b |
n |
cmb10 |
Computer modern sans serif |
cmss |
m |
n, sl |
cmss10, cmssi10 |
cmss |
bx |
n |
cmssbx10 |
cmss |
sbc |
n |
cmssdc10 |
Computer modern typewriter |
cmtt |
m |
n, it, sl, sc |
cmtt10, cmitt10, cmsltt, cmtcsc10 |
Computer modern fibonacci |
cmfi |
m |
n |
cmfib8 |
|
Given this overview about the classification of fonts it should be
clear how to select a specific font with the primitive commands
5, 6, 7, 8, and
9. As described in [#basic##1###], the
<#139#>size<#139#> macro takes two arguments: the size
in printer's points as a numeral (i.e.~without the
dimension) and the corresponding <#140#>
baselineskip<#140#> value (with a dimension). <#141#>
selectfont<#141#> finally selects the font using values of
the surrounding environment if some of the commands
are missing.
For example statements like ``Concrete roman condensed
slanted font at 9pt with 11pt leading''2 will
be translated into command sequences of the form:
verbatim69#
This will explicitly load the font mentioned above,
provided the necessary font shapes are known to the
system.3
However, in the normal case, the LATEX<#148#><#148#> user can safely rely on the
standard LATEX<#149#><#149#> font selection commands defined in terms
of these primitive commands. These standard commands are discussed
in the next sections.